http 请求完成,浏览器获取到了 html,开始解析并且渲染 HTML
总体流程
浏览器内核拿到内容后,渲染步骤:
1 2 3 4 5 6
| 1.解析HTML,构建DOM树 2.解析CSS,生成CSS规则树 3.合并DOM树和CSS规则,生成render树 4.布局render树(Layout/reflow),负责各元素尺寸、位置的计算 5.绘制render数据(paint),绘制页面像素信息 6.浏览器会将各层的信息发送给GPU,GPU会将各层合成(composite),显示在屏幕上
|

解析 HTML,构建 DOM 树
这是渲染流程第一步,浏览器将解析 HTML,构建成 DOM 树,
1
| 流程:Bytes -> characters -> tokens -> node -> DOM
|
1 2 3 4 5 6 7 8 9 10 11
| <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <link href="style.css" rel="stylesheet"> <title>Critical Path</title> </head> <body> <p>Hello <span>web performance</span> students!</p> <div><img src="awesome-photo.jpg"></div> </body> </html>
|
浏览器处理流程大概是这个样子
1 2 3 4
| 1.Conversion转换 -> 数据字节流(HTML内容Btyes)基于他的编码生成单个字符 2.Tokenizing分词 -> 由数据字节按浏览器HTML规范标准版生成标签、内容(标记TOKEN),每个TOKEN有他自己的定义和规则集 3.Lexing词法分析 -> 由白标签、内容成Token,此时把它们转换为对象,这些对象分别定义了他们的属性和4规则(header/p/span) 4.DOM构建-> 开始构建由不同的html标签的关系来渲染父->子结构的树状结构。
|
浏览器处理示意图:

形成 DOM 树:

结语
今天的内容比较少,一是最近工作挺多的,二是今天家里换了 200M 的网(免费的~ 开心),突然发现原先的路由器「小米路由器 3」和「小米电力猫」、交换机均不支持 200M 的速率,LAN 和 WAN 端口支持 100M,so 要花点时间挑选一个性价比高的路由器的电力猫。
